package com.example.studyproject.loginInterceptor;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.PathMatchConfigurer;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

/**
 * @program: SalaryProject
 * @description: 配置自动加载
 * @author: kangwei
 * @create: 2023-03-10 10:21
 **/
@Configuration
public class WebMvcConfig implements WebMvcConfigurer {

    // 不拦截的 url 集合
//    List<String> excludes = new ArrayList<String>() {{
//        add("/**/*.html");
//        add("/js/**");
//        add("/editor.md/**");
//        add("/css/**");
//        add("/img/**"); // 放行 static/img 下的所有文件
//        add("/user/login"); // 放行登录接口
//        add("/user/reg"); // 放行注册接口
//        add("/art/detail"); // 放行文章详情接口
//        add("/art/list"); // 放行文章分页列表接口
//        add("/art/totalpage"); // 放行文章分页总页数接口
//    }};
    @Autowired
    private LoginInterceptor loginInterceptor;

    /**
     * 将自定义的拦截器加入系统配置
     *
     * @param registry
     */
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(loginInterceptor)
                .addPathPatterns("/**") // 拦截所有请求，包括静态资源
                .excludePathPatterns("/user/login") // 不拦截登录请求
                .excludePathPatterns("/user/register"); // 放行注册请求
        //        registration.excludePathPatterns(excludes);
    }

    /**
     * 配置统一前缀
     *没实现，我太菜了
     * @param configurer
     */
//    @Override
//    public void configurePathMatch(PathMatchConfigurer configurer) {
//    configurer.addPathPrefix("/api",c ->c.isAnnotationPresent(RestController.class));
//    }
}
